package com.chia.multienty.workflow.service;

import com.chia.multienty.core.domain.bo.workflow.ProcessDeployResult;
import com.chia.multienty.core.domain.bo.workflow.ProcessStartResult;
import com.chia.multienty.core.parameter.workflow.*;
import com.chia.multienty.workflow.parameter.FlowableProcessInstanceDeleteParameter;
import com.chia.multienty.workflow.parameter.FlowableProcessInstanceListGetParameter;

import java.util.List;
import java.util.Map;

public interface FlowableProcessService {
    /**
     * 部署流程
     * @param parameter
     * @return
     */
    ProcessDeployResult deploy(FlowableDeployParameter parameter);

    ProcessDeployResult redeploy(FlowableRedeployParameter parameter);

    void deleteDeploy(FlowableDeployDeleteParameter parameter);

    /**
     * 启动流程
     * @param parameter
     * @return
     */
    ProcessStartResult start(FlowableProcessStartParameter parameter);

    /**
     * 撤销流程
     * @param parameter
     */
    void revoke(FlowableProcessRevokeParameter parameter);

    List<String> getProcessInsList(FlowableProcessInstanceListGetParameter parameter);

    void deleteProcessIns(FlowableProcessInstanceDeleteParameter parameter);

    /**
     * 查询任务列表
     * @param parameter
     * @return
     */
    List<Map<String, Object>> list(FlowableTaskListGetParameter parameter);

    void claim(FlowableTaskClaimParameter parameter);

    /**
     * 执行审批
     * @param parameter
     */
    void examine(FlowableExamineParameter parameter);

}
